<?php

/**
 * Permite agregar o eliminar los nombres de las calles
 * @package simertweb
 * @subpackage controllers 
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com>
 * @version 1.0 
 */
class Calles extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('mcalles');
        $this->load->model('acceso');
    }

    /**
     * Muestra todas las calles creadas
     */
    function index() {
        if ($this->acceso->sesion() == 1) {
            $data['listacalles'] = $this->mcalles->callesLista();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('calles', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permite guardar un nombre de una nueva calle
     */
    function guardar() {
        $this->form_validation->set_rules('calle', ' ', 'required|callback_calles_check|alpha_space|min_length[4]|max_length[30]|trim');
        if ($this->form_validation->run() === TRUE) {
            $this->mcalles->guardar(strtoupper($_POST['calle']));
            $this->index();
        } else {
            $this->index();
        }
    }

    /**
     * Permite eliminar una calle
     */
    function eliminar_calles() {
        $this->form_validation->set_rules('lista', ' ', 'callback_eliminar_check');
        if ($this->form_validation->run() == TRUE) {
            $this->mcalles->eliminar($_POST["lista"]);
            $this->index();
        } else {
            $this->index();
        }
    }

    /**
     * Valida si se puede eliminar un nombre de una calle
     * @return boolean
     */
    function eliminar_check() {
        if ($this->mcalles->validar_eliminar($_POST["lista"]) != TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('eliminar_check', '<p style="color: red">No se puede eliminar la CALLE seleccionada</p>');
            return FALSE;
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red"> El campo %s acepta solo carateres alfabéticos</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Válida que el nombre de la calle no se duplique
     * @return boolean
     */
    function calles_check() {
        if ($this->mcalles->validar_calle() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('calles_check', '<p style="color: red">La calle ya existe</p>');
            return FALSE;
        }
    }

}

?>
